Python 的 for 迴圈 是程式中常見的控制結構之一,它會逐一遍歷物件中的每個元素,過程中可進行輸出、記錄或操作元素,特別適合需要對每個元素進行重複操作的情境。
先來看看 for 迴圈的流程圖:
for var in 可迭代物件:
程式碼區塊
range()
函數等。Python 的 range() 函數生成一個等差級數序列,稱為可迭代物件,這個序列通常被用作迴圈計數器。
range(start, stop, step)
來看看實例,試著顯示出1~5之間的整數:
巢狀迴圈是指一個迴圈內還有另一個迴圈,這樣的結構會將外層迴圈的每次執行,與內層迴圈的多次執行相結合。
例如,如果外層迴圈需要執行 n 次,而內層迴圈需要執行 m 次,則整體的執行次數會是 n*m。
這裡可以練習看看九九乘法表的應用:
首先,外層的迴圈將進行9次,內層迴圈也會進行9次,因此可以形成9*9乘法表。
%-3d 主要用於格式化 result,表示每個輸出佔3格並左對齊。同行的 end=" " 設定輸出後空一格且不換行。
而內層迴圈執行完後,外層迴圈則執行 print(),這會在下次進入內層迴圈前換行輸出。
break
:若需要根據條件來提前結束迴圈時可以使用,當某條件成立時,可以立即跳出迴圈。continue
:可以讓迴圈暫時跳過當次的執行,直接進入下一次的迴圈。
上述在第一個迴圈的測試中,當碰到迴圈元素是5時,迴圈將終止,所以只有列出"1, 2, 3, 4,"元素。
在第二個迴圈的測試中,因為這個迴圈是以 step=2 的方式遍歷 0~11,其中本來就不會有5,所以不受條件影響,整個迴圈可以正常執行到結束。
當進入 if 條件並判斷為 True(number 是 5 的倍數時),會執行 continue 跳過目前迴圈的其餘部分,直接進入下一次的迴圈,因此 print(number) 不會執行,像 5、10、15、20 這些數字不會被輸出。
若 number 不是 5 的倍數,if 條件不成立,程式將執行 print(number) 輸出目前的 number ,顯示所有非 5 的倍數的數字。
for-else 是 Python 的一個特殊結構,它在 for 迴圈正常執行完後,會執行 else 部分的程式碼。這個結構常用於質數測試等情境中,如果迴圈內沒有 break 跳出迴圈,則執行 else 區塊的程式碼。
一起來看看今天最後的應用!質數測試程式:如果輸入的數字是質數則輸出是質數,否則輸出不是質數。
這題的難點在於將 for 迴圈放在 else 更適合處理,因為 2 是明確的質數,直接用 if 條件輸出即可。
接著是 for 迴圈的範圍設置。由於每個數都有 1 和自身作為因數,這部分不需判斷。因此只需檢查 2 到 num-1 的數字,如果 num 能被其中的數整除,代表它有其他公因數,就不是質數,迴圈也可立即中止。
相反的,若無法整除,表示 2 到 num-1 間無其他公因數,此數即為質數。
第二個 else 與 for 迴圈相關,只有在迴圈完整執行並未觸發 break 時才會執行;若執行了 break,第二個 else 則不會運行。
學完迴圈之後,我覺得這個概念非常實用。以前在做重複動作的時候,總是要一行一行的寫出來,既麻煩又容易出錯,但迴圈讓我可以用幾行簡單的程式碼來處理大量的數據,大大提升了效率><
反思一下,剛開始接觸迴圈時覺得它好像很難懂,特別是巢狀迴圈,經常會搞混內外層迴圈的執行順序。但是在我經過了幾次的練習後,還學會了搭配 break 和 continue 來調整迴圈的執行邏輯,才發現原來可以這麼精準的控制程式運作
最後想說,學會迴圈真的讓我看待程式邏輯的方式有了很大的改變。它不僅幫助我優化程式的結構,也讓我對「自動化」有了更多的理解和體會~